/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	bar_scan.h
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-05-24
**	Function List： 
**  History:         
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              	防止重复包含
*********************************************************************************************************
*/

#ifndef  _CR100_SCAN_H_
#define  _CR100_SCAN_H_
/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/



/*
*********************************************************************************************************
*                                              	头文件
*********************************************************************************************************
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "uart.h"
#include "stm32h7xx_hal.h"
#include "bsp_conf.h"
#include "log_console.h"
/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/
#define CR100_UART_RXBUFF_SIZE 64

#define CR100_VERSION_CHECK_SIZE	6

#define CR100_UART_BAUDRATE		9600

#define CR100_CMD_SEPATATOR		0x02
#define CR100_CMD_TAIL				0x0A
/*
*********************************************************************************************************
*                                              枚举和结构体类型定义
*********************************************************************************************************
*/
typedef enum{
	CR100_UNINIT,
	CR100_IDLE,
	CR100_SINGLE_SCAN,
	CR100_CONTINUOUS_SCAN,
	CR100_ERR,
}cr100_status_t;

typedef struct CR100{
	bsp_uart_t * p_uart;
	cr100_status_t status;
	
	uint8_t ack_cnt;	//检测发送命令是否有回复 特殊如单次扫码无回复
	
	uint8_t rx_buff[CR100_UART_RXBUFF_SIZE];
	
	void	(*pfn_scan_rlt_cb)(struct CR100*,uint8_t * buff,uint16_t size);
}cr100_t;

typedef void	(*cr100_scan_rlt_callback)(struct CR100*,uint8_t * buff,uint16_t size);
/*
*********************************************************************************************************
*                                              	全局变量声明
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                              	函数声明
*********************************************************************************************************
*/


cr100_t* cr100_init(cr100_scan_rlt_callback);
cr100_status_t cr100_start(cr100_status_t);
cr100_status_t cr100_status(void);
#endif
